/*
 * 联系人
 * */
Ext.define('App.crm.contactForm',
				{
					extend : 'Ext.window.Window',
					alias : 'widget.contactForm',
					initComponent : function() {
						this.fields = new Ext.util.MixedCollection();
						this.fields.add('id', new Ext.form.Hidden({
							name : 'id',
							dataIndex : 'id'
						}));
						this.fields.add('deleteFlag', new Ext.form.Hidden({
							name : 'deleteFlag',
							dataIndex : 'deleteFlag'
						}));
						this.fields.add('name', new Ext.form.TextField({
							name : 'name',
							dataIndex : 'name',
							fieldLabel : '姓名',
							allowBlank : false
						}));
						this.fields.add('mobile', new Ext.form.TextField({
							name : 'mobile',
							dataIndex : 'mobile',
							fieldLabel : '手机',
							allowBlank : true
						}));
						this.fields.add('officePhone', new Ext.form.TextField({
							name : 'officePhone',
							dataIndex : 'officePhone',
							fieldLabel : '办公电话',
							allowBlank : true
						}));
						this.fields.add('email', new Ext.form.TextField({
							name : 'email',
							dataIndex : 'email',
							fieldLabel : '电子邮箱',
							allowBlank : true
						}));
						this.fields.add('customerId', new Ext.form.Hidden({
							name : 'customerId',
							dataIndex : 'customerId'
						}));
						this.fields.add('btnCustomersId', new Ext.Button({
							name : 'btnCustomersId',
							dataIndex : 'btnCustomersId',
							iconCls : 'searchIcon',
							scope : this,
							handler : this.onCustomerSel,
							width : 25
						}));
						this.fields.add('customerName', new Ext.form.TextField(
								{
									name : 'customerName',
									dataIndex : 'customerName',
									fieldLabel : '客户名称',
									readOnly : true,
									emailText : '请选择客户',
									width : 230,
									allowBlank : false
								}));
						this.fields.add('drectSuperior',
								new Ext.form.TextField({
									name : 'drectSuperior',
									dataIndex : 'drectSuperior',
									fieldLabel : '直接上级',
									allowBlank : true
								}));
						this.fields.add('position', new Ext.form.TextField({
							name : 'position',
							dataIndex : 'position',
							fieldLabel : '职务',
							allowBlank : true
						}));
						this.fields.add('department', new Ext.form.TextField({
							name : 'department',
							dataIndex : 'department',
							fieldLabel : '部门',
							allowBlank : true
						}));
						this.fields.add('homePhone', new Ext.form.TextField({
							name : 'homePhone',
							dataIndex : 'homePhone',
							fieldLabel : '家庭电话',
							allowBlank : true
						}));
						this.fields.add('source', new Ext.form.NumberField({
							name : 'source',
							dataIndex : 'source',
							allowDecimals : false,
							decimalPrecision : null,
							fieldLabel : '来源',
							allowBlank : true
						}));
						this.fields.add('otherPhones', new Ext.form.TextField({
							name : 'otherPhones',
							dataIndex : 'otherPhones',
							fieldLabel : '其他手机',
							allowBlank : true
						}));
						this.fields.add('dateOfBirth', new dateTime({
							name : 'dateOfBirth',
							dataIndex : 'dateOfBirth',
							format : 'Y-m-d',
							fieldLabel : '出生日期',
							allowBlank : true
						}));
						this.fields.add('otherPhone', new Ext.form.TextField({
							name : 'otherPhone',
							dataIndex : 'otherPhone',
							fieldLabel : '其他电话',
							allowBlank : true
						}));
						this.fields.add('hobby', new Ext.form.TextArea({
							name : 'hobby',
							dataIndex : 'hobby',
							fieldLabel : '爱好',
							allowBlank : true
						}));
						this.fields.add('fax', new Ext.form.TextField({
							name : 'fax',
							dataIndex : 'fax',
							fieldLabel : '传真',
							allowBlank : true
						}));

						this.fields.add('remark', new Ext.form.TextArea({
							name : 'remark',
							dataIndex : 'remark',
							fieldLabel : '备注',
							allowBlank : true
						}));

						var form = Ext
								.widget(
										'form',
										{
											frame : false,
											border : true,
											split : true,
											autoScroll : true,
											bodyPadding : 5,
											bodyBorder : true,
											fieldDefaults : {
												labelWidth : 85,
												labelAlign : 'right',
												msgTarget : 'side'
											},
											defaults : {
												anchor : '100%'
											},
											items : [
													this.fields.get('id'),
													this.fields
															.get('deleteFlag'),
													{
														xtype : 'fieldset',
														title : '联系人信息',
														collapsible : true,
														defaults : {
															labelWidth : 89,
															anchor : '100%',
															layout : {
																type : 'hbox',
																defaultMargins : {
																	top : 0,
																	right : 5,
																	bottom : 0,
																	left : 0
																}
															}
														},
														items : [
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('name'),
																			this.fields
																					.get('mobile') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('officePhone'),
																			this.fields
																					.get('email') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			{
																				xtype : 'container',
																				layout : 'hbox',
																				margin : '0 0 5 0',
																				defaults : {

																					hideLabel : true
																				},
																				items : [
																						this.fields
																								.get('customerId'),
																						this.fields
																								.get('customerName'),
																						this.fields
																								.get('btnCustomersId') ]
																			},
																			this.fields
																					.get('drectSuperior') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('position'),
																			this.fields
																					.get('department') ]
																} ]
													},
													{
														xtype : 'fieldset',
														title : '其它信息',
														collapsible : true,
														defaults : {
															labelWidth : 89,
															anchor : '100%',
															layout : {
																type : 'hbox',
																defaultMargins : {
																	top : 0,
																	right : 5,
																	bottom : 0,
																	left : 0
																}
															}
														},
														items : [
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('homePhone'),
																			this.fields
																					.get('source') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('otherPhones'),
																			this.fields
																					.get('dateOfBirth') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [
																			this.fields
																					.get('otherPhone'),
																			this.fields
																					.get('fax') ]
																},
																{
																	xtype : 'container',
																	layout : 'hbox',
																	margin : '0 0 5 0',
																	defaults : {
																		flex : 1,
																		hideLabel : true
																	},
																	items : [ this.fields
																			.get('hobby') ]
																} ]
													},
													{
														xtype : 'fieldset',
														title : '地址信息',
														collapsible : true,
														defaults : {
															anchor : '100%',
															layout : {
																type : 'hbox',
																defaultMargins : {
																	top : 0,
																	right : 5,
																	bottom : 0,
																	left : 0
																}
															}
														},
														items : [
																{
																	xtype : 'textfield',
																	name : 'billingZipCode',
																	dataIndex : 'billingZipCode',
																	fieldLabel : '开单邮编',
																	allowBlank : true
																},
																{
																	xtype : 'textfield',
																	name : 'billingAddress',
																	dataIndex : 'billingAddress',
																	fieldLabel : '开单地址',
																	allowBlank : true
																},
																{
																	xtype : 'textfield',
																	name : 'shipZipCode',
																	dataIndex : 'shipZipCode',
																	fieldLabel : '发货邮编',
																	allowBlank : true
																},
																{
																	xtype : 'textfield',
																	name : 'shipAddress',
																	dataIndex : 'shipAddress',
																	fieldLabel : '发货地址',
																	allowBlank : true
																} ]
													},
													{
														xtype : 'fieldset',
														title : '备注信息',
														collapsible : true,
														defaults : {
															labelWidth : 89,
															anchor : '100%',
															layout : {
																type : 'hbox',
																defaultMargins : {
																	top : 0,
																	right : 5,
																	bottom : 0,
																	left : 0
																}
															}
														},
														items : [ this.fields
																.get('remark') ]
													} ]
										});
						Ext
								.apply(
										this,
										{
											title : '新增',
											layout : 'fit',
											height : 500,
											width : 600,
											modal : true,
											constrain : true,
											closeAction : 'hide',
											buttonAlign : 'center',
											buttons : [
													{
														text : "保存",
														handler : function() {
															// this.up(‘window’)获取了顶级的window组件。接着使用down()方法获取了window的子组件form组件，最后使用getForm()来获取整个form。
															var form = this
																	.up(
																			'contactForm')
																	.down(
																			'form');
															if (form.getForm()
																	.isValid()) {
																form
																		.getForm()
																		.submit(
																				{
																					url : getRootPath()
																							+ '/contactController/save.action',
																					scope : form,
																					success : function(
																							form,
																							action) {
																						this
																								.up(
																										'contactForm')
																								.close();
																						Ext
																								.getCmp(
																										'contactGrid')
																								.getStore()
																								.reload();
																					},
																					failure : function(
																							form,
																							action) {
																						if (action.result.message == undefined)
																							Ext.Msg
																									.alert(
																											'错误',
																											'网络连接失败.');
																						else
																							Ext.Msg
																									.alert(
																											'错误',
																											action.result.message);
																					},
																					waitMsg : '保存数据...'
																				});
															} else {
																Ext.Msg
																		.alert(
																				'提示',
																				'表单含有无效或空数据');
															}
														}
													},
													{
														text : "关闭",
														handler : function() {
															this
																	.up(
																			'contactForm')
																	.close();
														}
													} ],
											items : form
										});

						this.callParent(arguments);
					},
					businessOpportunitiesWin : null,
					onBusinessOpportunitiesSel : function() {
						if (this.down('form').getForm().findField("customerId")
								.getValue() == "") {
							Ext.Msg.show('请选择客户');
							return;
						}
						if (!this.businessOpportunitiesWin) {
							this.businessOpportunitiesWin = new businessOpportunitiesSel(
									{
										customersId : this.down('form')
												.getForm().findField(
														"customerId")
												.getValue()
									});
							this.businessOpportunitiesWin.on('onSelectItem',
									function(data) {
										this.down('form').getForm().findField(
												'businessOpportunitiesId')
												.setValue(data.id);
										this.down('form').getForm().findField(
												'businessOpportunitiesName')
												.setValue(data.bussName);
									}, this);
						}
						this.businessOpportunitiesWin.show();
					},
					customerSelWin : null,
					onCustomerSel : function() {
						if (!this.customerSelWin) {
							this.customerSelWin = new customersSel();
							this.customerSelWin.on('onSelectItem', function(
									data) {
								this.down('form').getForm().findField(
										"customerId").setValue(data.id);
								this.down('form').getForm().findField(
										"customerName").setValue(data.company);
							}, this);

						}
						this.customerSelWin.show();
					}
				});